package com.yt.user.service;

import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.yt.common.utils.Md5Utils;
import com.yt.user.models.dto.LoginInfoDTO;
import com.yt.user.models.service.ILoginInfoService;
import com.yt.user.models.vo.MaintainerInfoVO;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.BeanUtils;
import javax.annotation.Resource;
import com.yt.user.common.config.YmlConfig;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.yt.user.mapper.MaintainerInfoMapper;
import com.yt.user.models.service.IMaintainerInfoService;
import com.yt.user.models.bo.MaintainerInfoSaveBO;
import com.yt.user.models.dto.MaintainerInfoDTO;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * 维修人员信息控制器
 *
 * @author zhou
 * @Date 2025-10-27 13:53:30
 */
@DubboService
public class MaintainerInfoServiceImpl extends ServiceImpl<MaintainerInfoMapper, MaintainerInfoDTO> implements IMaintainerInfoService{

    @Resource
    private YmlConfig ymlConfig;
    @Resource
    private ILoginInfoService loginInfoService;

    @Override
    public boolean add(MaintainerInfoSaveBO saveBO) {
        MaintainerInfoDTO dto = new MaintainerInfoDTO();
        BeanUtils.copyProperties(saveBO,dto);
        Long id = ymlConfig.getPkId();
        dto.setId(id);
        return this.insert(dto);
    }

    @Override
    public List<MaintainerInfoVO> query() {
        Wrapper wrapper = new EntityWrapper<MaintainerInfoDTO>();
        wrapper.eq("is_delete", 0);
        List<MaintainerInfoDTO> dtoList=this.selectList(wrapper);
        List<MaintainerInfoVO> voList=new ArrayList<MaintainerInfoVO>();
        for(MaintainerInfoDTO dto:dtoList){
            MaintainerInfoVO vo=new MaintainerInfoVO();
            BeanUtils.copyProperties(dto,vo);
            voList.add(vo);
        }
        return voList;
    }

    @Override
    public Boolean addAll(MaintainerInfoSaveBO saveBO) {
        //1.添加维修人员信息
        MaintainerInfoDTO dto = new MaintainerInfoDTO();
        BeanUtils.copyProperties(saveBO,dto);
        Long id = ymlConfig.getPkId();
        dto.setId(id);
        this.insert(dto);

        //2.用户登录信息保持
        LoginInfoDTO loginInfoDTO = new LoginInfoDTO();
        //2.1主键设置
        Long loginId = ymlConfig.getPkId();
        loginInfoDTO.setId(loginId);
        //2.2账号设置
        loginInfoDTO.setAccount(saveBO.getPhone());
        //2.3关联用户id设置
        loginInfoDTO.setUserId(id);
        //2.4密码设置(默认12345678)
        String salt = Md5Utils.createSalt();
        loginInfoDTO.setSalt(salt);
        loginInfoDTO.setPassword(Md5Utils.MD5Encode("12345678", salt));
        boolean flag=loginInfoService.insert(loginInfoDTO);
        return flag;
    }


}
